#ifndef _TB_INVOKE_INTERFACE_H_
#define _TB_INVOKE_INTERFACE_H_
#include <windows.h>
#include "RadioDef.h"

class CTBInvokeInterface
{
public:
	CTBInvokeInterface();
	~CTBInvokeInterface();
public:
	HMODULE m_hTBInvoke;	
public:
	typedef void (*PFN_INITIALDEVICECOMM)();
//Radio Area	
	typedef long (*PFN_REGISTERRADIODATACALLBACK)(TB_RadioData_CbkFunc RadioData_CbkFunc);
	typedef void (*PFN_RAIDOBANDCHANGECMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_RADIOTUNERUPCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_RADIOTUNERDOWNCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_RADIOSEEKUPCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_RADIOSEEKDOWNCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_RADIOLOCCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_RADIOEQCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_RADIOPRESETCHANGECMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_RADIOSAVEPRESETCHANGECMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_RADIOASCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_RADIOPSCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_RADIOSTEREOCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_RADIOTUNERENTERCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_RADIOFADBALANCECMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_RADIOMUTECMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_RADIODDBCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_RADIOSCANCMD)(WPARAM wParam, LPARAM lParam);
public:
	PFN_INITIALDEVICECOMM			m_iInitialDeviceComm;
//Radio Area
	PFN_REGISTERRADIODATACALLBACK	m_iRegisterRadioDataCallback;
	PFN_RAIDOBANDCHANGECMD			m_iRadioBandChangeCmd;
	PFN_RADIOTUNERUPCMD				m_iRadioTunerUpCmd;
	PFN_RADIOTUNERDOWNCMD			m_iRadioTunerDownCmd;
	PFN_RADIOSEEKUPCMD				m_iRadioSeekUpCmd;
	PFN_RADIOSEEKDOWNCMD			m_iRadioSeekDownCmd;
	PFN_RADIOLOCCMD					m_iRadioLocCmd;
	PFN_RADIOEQCMD					m_iRadioEQCmd;
	PFN_RADIOPRESETCHANGECMD		m_iRadioPresetChangeCmd;
	PFN_RADIOSAVEPRESETCHANGECMD	m_iRadioSavePresetChangeCmd;
	PFN_RADIOASCMD					m_iRadioASCmd;
	PFN_RADIOPSCMD					m_iRadioPSCmd;
	PFN_RADIOSTEREOCMD				m_iRadioStereoCmd;
	PFN_RADIOTUNERENTERCMD			m_iRadioTunerEnterCmd;
	PFN_RADIOFADBALANCECMD			m_iRadioFadBalanceCmd;
	PFN_RADIOMUTECMD				m_iRadioMuteCmd;
	PFN_RADIODDBCMD					m_iRadioDDBCmd;
	PFN_RADIOSCANCMD				m_iRadioScanCmd;	
};

extern CTBInvokeInterface g_TBInvokeInterface;

#endif